package 设计原则.单一职责原则;

/**
 * 单一职责原则注意事项和细节
 * 1)降低类的复杂度，一个类只负责一项职责。
 * 2)提高类的可读性，可维护性
 * 3) 降低变更引起的风险.
 * 4) 通常情况下，我们应当遵守单一职责原则，只有逻辑足够简单，才可以在代码级违
 * 反单一职责原则;只有类中方法数量足够少，可以在方法级别保持单- -职责原则
 */

//方案2的分析(类级别)
//1.遵守单一职责原则
//2.但是这样做的改动很大,即将类分解，同时修改客户端
//3.改进:直接修改Vehicle类，改动的代码会比较少=>方案3
public class SingleResponsibility2 {
    public static void main(String[] args) {
        GroundVehicle groundVehicle = new GroundVehicle();
        groundVehicle.run("汽车");
        SkyVehicle skyVehicle = new SkyVehicle();
        skyVehicle.run("飞机");
        SeaVehicle seaVehicle = new SeaVehicle();
        seaVehicle.run("潜艇");
    }
}

class GroundVehicle {
    public void run(String tool) {
        System.out.println(tool+"在地上跑");
    }
}

class SkyVehicle {
    public void run(String tool) {
        System.out.println(tool+"在天上飞");
    }
}

class SeaVehicle {
    public void run(String tool) {
        System.out.println(tool+"在海里移动");
    }
}